package com.aiapphub.BaseCode.service;

import com.aiapphub.BaseCode.entity.Menu;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 菜单管理服务接口
 */
public interface MenuService extends IService<Menu> {

    /**
     * 获取菜单列表（树形结构）
     * @return 菜单列表
     */
    List<Menu> getMenuTree();

    /**
     * 获取用户菜单列表
     * @param userId 用户ID
     * @return 用户菜单列表
     */
    List<Menu> getUserMenus(Long userId);

    /**
     * 保存菜单
     * @param menu 菜单信息
     * @return 是否成功
     */
    boolean saveMenu(Menu menu);

    /**
     * 更新菜单
     * @param menu 菜单信息
     * @return 是否成功
     */
    boolean updateMenu(Menu menu);

    /**
     * 删除菜单
     * @param menuId 菜单ID
     * @return 是否成功
     */
    boolean removeMenu(Long menuId);

    /**
     * 检查菜单是否有子菜单
     * @param menuId 菜单ID
     * @return 是否有子菜单
     */
    boolean hasChildren(Long menuId);

    /**
     * 检查菜单是否被角色使用
     * @param menuId 菜单ID
     * @return 是否被使用
     */
    boolean isMenuUsedByRole(Long menuId);
    
    /**
     * 根据角色ID获取菜单ID列表
     * @param roleId 角色ID
     * @return 菜单ID列表
     */
    List<Long> getMenuIdsByRoleId(Long roleId);
}